home *** CD-ROM | disk | FTP | other *** search
/ PC/CD Gamer UK 120 / CD Gamer Issue 120 (March 2003) (Disc 2).ISO / mods / Q2_Codered / codeRED1_0.exe / Data1.cab / qmenu.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-08-13  |  3.1 KB  |  141 lines

  1. /*
  2. Copyright (C) 1997-2001 Id Software, Inc.
  3.  
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8.  
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
  12.  
  13. See the GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  
  19. */
  20. #ifndef __QMENU_H__
  21. #define __QMENU_H__
  22.  
  23. #define MAXMENUITEMS    64
  24.  
  25. #define MTYPE_SLIDER        0
  26. #define MTYPE_LIST            1
  27. #define MTYPE_ACTION        2
  28. #define MTYPE_SPINCONTROL    3
  29. #define MTYPE_SEPARATOR      4
  30. #define MTYPE_FIELD            5
  31.  
  32. #define    K_TAB            9
  33. #define    K_ENTER            13
  34. #define    K_ESCAPE        27
  35. #define    K_SPACE            32
  36.  
  37. // normal keys should be passed as lowercased ascii
  38.  
  39. #define    K_BACKSPACE        127
  40. #define    K_UPARROW        128
  41. #define    K_DOWNARROW        129
  42. #define    K_LEFTARROW        130
  43. #define    K_RIGHTARROW    131
  44.  
  45. #define QMF_LEFT_JUSTIFY    0x00000001
  46. #define QMF_GRAYED            0x00000002
  47. #define QMF_NUMBERSONLY        0x00000004
  48.  
  49. typedef struct _tag_menuframework
  50. {
  51.     int x, y;
  52.     int    cursor;
  53.  
  54.     int    nitems;
  55.     int nslots;
  56.     void *items[64];
  57.  
  58.     const char *statusbar;
  59.  
  60.     void (*cursordraw)( struct _tag_menuframework *m );
  61.     
  62. } menuframework_s;
  63.  
  64. typedef struct
  65. {
  66.     int type;
  67.     const char *name;
  68.     int x, y;
  69.     menuframework_s *parent;
  70.     int cursor_offset;
  71.     int    localdata[4];
  72.     unsigned flags;
  73.  
  74.     const char *statusbar;
  75.  
  76.     void (*callback)( void *self );
  77.     void (*statusbarfunc)( void *self );
  78.     void (*ownerdraw)( void *self );
  79.     void (*cursordraw)( void *self );
  80. } menucommon_s;
  81.  
  82. typedef struct
  83. {
  84.     menucommon_s generic;
  85.  
  86.     char        buffer[80];
  87.     int            cursor;
  88.     int            length;
  89.     int            visible_length;
  90.     int            visible_offset;
  91. } menufield_s;
  92.  
  93. typedef struct 
  94. {
  95.     menucommon_s generic;
  96.  
  97.     float minvalue;
  98.     float maxvalue;
  99.     float curvalue;
  100.  
  101.     float range;
  102. } menuslider_s;
  103.  
  104. typedef struct
  105. {
  106.     menucommon_s generic;
  107.  
  108.     int curvalue;
  109.  
  110.     const char **itemnames;
  111. } menulist_s;
  112.  
  113. typedef struct
  114. {
  115.     menucommon_s generic;
  116. } menuaction_s;
  117.  
  118. typedef struct
  119. {
  120.     menucommon_s generic;
  121. } menuseparator_s;
  122.  
  123. qboolean Field_Key( menufield_s *field, int key );
  124.  
  125. void    Menu_AddItem( menuframework_s *menu, void *item );
  126. void    Menu_AdjustCursor( menuframework_s *menu, int dir );
  127. void    Menu_Center( menuframework_s *menu );
  128. void    Menu_Draw( menuframework_s *menu );
  129. void    *Menu_ItemAtCursor( menuframework_s *m );
  130. qboolean Menu_SelectItem( menuframework_s *s );
  131. void    Menu_SetStatusBar( menuframework_s *s, const char *string );
  132. void    Menu_SlideItem( menuframework_s *s, int dir );
  133. int        Menu_TallySlots( menuframework_s *menu );
  134.  
  135. void     Menu_DrawString( int, int, const char * );
  136. void     Menu_DrawStringDark( int, int, const char * );
  137. void     Menu_DrawStringR2L( int, int, const char * );
  138. void     Menu_DrawStringR2LDark( int, int, const char * );
  139.  
  140. #endif
  141.